namespace ext.data
{
	using System;
	using System.Runtime.CompilerServices;
	using System.Html;
	using System.Collections;
	
	
	/// <summary>
	/// Abstract base class for reading structured data from a data source and converting
	/// it into an object containing {@link Ext.data.Record} objects and metadata for use
	/// by an {@link Ext.data.Store}. This class is intended to be extended and should not
	/// be created directly. For existing implementations, see {@link Ext.data.ArrayReader},
	/// {@link Ext.data.JsonReader} and {@link Ext.data.XmlReader}.
	/// </summary>
	/// <definedin>src\data\DataReader.js</definedin>
	[ScriptName("DataReader")]
	[ScriptNamespace("Ext.data")]
	[Imported()]
	public partial class DataReader
	{
		
		#region Constructors
		public DataReader(ext.data.DataReader_Configuration config)
		{
		}
		
		/// <summary>Constructor</summary>
		/// <param name="meta">Metadata configuration options (implementation-specific).</param>
		/// <param name="recordType">
		/// &lt;p&gt;Either an Array of {@link Ext.data.Field Field} definition objects (which
		/// will be passed to {@link Ext.data.Record#create}, or a {@link Ext.data.Record Record}
		/// constructor created using {@link Ext.data.Record#create}.&lt;/p&gt;
		/// </param>
		public DataReader(object meta, System.Array recordType)
		{
		}
		
		/// <summary>Constructor</summary>
		/// <param name="meta">Metadata configuration options (implementation-specific).</param>
		/// <param name="recordType">
		/// &lt;p&gt;Either an Array of {@link Ext.data.Field Field} definition objects (which
		/// will be passed to {@link Ext.data.Record#create}, or a {@link Ext.data.Record Record}
		/// constructor created using {@link Ext.data.Record#create}.&lt;/p&gt;
		/// </param>
		public DataReader(object meta, object recordType)
		{
		}
		
		/// <summary>Constructor</summary>
		public DataReader()
		{
		}
		#endregion
		
		#region Fields
		/// <summary>
		/// Either an Array of {@link Ext.data.Field Field} definition objects (which
		/// will be passed to {@link Ext.data.Record#create}, or a {@link Ext.data.Record Record}
		/// constructor created from {@link Ext.data.Record#create}.
		/// </summary>
		/// <htmlSummary>
		/// &lt;p&gt;Either an Array of {@link Ext.data.Field Field} definition objects (which
		/// will be passed to {@link Ext.data.Record#create}, or a {@link Ext.data.Record Record}
		/// constructor created from {@link Ext.data.Record#create}.&lt;/p&gt;
		/// </htmlSummary>
		/// <definedin>src\data\DataReader.js</definedin>
		[ScriptName("fields")]
		public ext.auto.System_Object_Or_System_Array Fields;
		
		/// <summary>[undefined] Optional name of a property within a server-response that represents a user-feedback message.</summary>
		/// <definedin>src\data\DataReader.js</definedin>
		[ScriptName("messageProperty")]
		public string MessageProperty;
		#endregion
		
		#region Properties
		/// <summary>This DataReader&apos;s configured metadata as passed to the constructor.</summary>
		/// <definedin>src\data\DataReader.js</definedin>
		[ScriptName("meta")]
		[IntrinsicProperty()]
		public object Meta
		{
			get
			{
				throw new System.Exception("Imported - not implemented");
			}
			set
			{
			}
		}
		#endregion
		
		#region Methods
		/// <summary>Abstract method created in extension&apos;s buildExtractors impl.</summary>
		/// <definedin>src\data\DataReader.js</definedin>
		[ScriptName("getTotal")]
		public void GetTotal()
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>Abstract method created in extension&apos;s buildExtractors impl.</summary>
		/// <definedin>src\data\DataReader.js</definedin>
		[ScriptName("getRoot")]
		public void GetRoot()
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>Abstract method created in extension&apos;s buildExtractors impl.</summary>
		/// <definedin>src\data\DataReader.js</definedin>
		[ScriptName("getMessage")]
		public void GetMessage()
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>Abstract method created in extension&apos;s buildExtractors impl.</summary>
		/// <definedin>src\data\DataReader.js</definedin>
		[ScriptName("getSuccess")]
		public void GetSuccess()
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>Abstract method created in extension&apos;s buildExtractors impl.</summary>
		/// <definedin>src\data\DataReader.js</definedin>
		[ScriptName("getId")]
		public void GetId()
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>Abstract method, overridden in DataReader extensions such as {@link Ext.data.JsonReader} and {@link Ext.data.XmlReader}</summary>
		/// <definedin>src\data\DataReader.js</definedin>
		[ScriptName("buildExtractors")]
		public void BuildExtractors()
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>Abstract method overridden in DataReader extensions such as {@link Ext.data.JsonReader} and {@link Ext.data.XmlReader}</summary>
		/// <definedin>src\data\DataReader.js</definedin>
		[ScriptName("extractValues")]
		public void ExtractValues()
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>
		/// Returns true if the supplied data-hash looks and quacks like data. Checks to see if it has a key
		/// corresponding to idProperty defined in your DataReader config containing non-empty pk.
		/// </summary>
		/// <htmlSummary>
		/// Returns true if the supplied data-hash &lt;b&gt;looks&lt;/b&gt; and quacks like data. Checks to see if it has a key
		/// corresponding to idProperty defined in your DataReader config containing non-empty pk.
		/// </htmlSummary>
		/// <definedin>src\data\DataReader.js</definedin>
		/// <param name="data"></param>
		[ScriptName("isData")]
		public bool IsData(object data)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>
		/// Used for un-phantoming a record after a successful database insert. Sets the records pk along with new data from server.
		/// You must return at least the database pk using the idProperty defined in your DataReader configuration. The incoming
		/// data from server will be merged with the data in the local record.
		/// In addition, you must return record-data from the server in the same order received.
		/// Will perform a commit as well, un-marking dirty-fields. Store&apos;s &quot;update&quot; event will be suppressed.
		/// </summary>
		/// <htmlSummary>
		/// Used for un-phantoming a record after a successful database insert. Sets the records pk along with new data from server.
		/// You &lt;b&gt;must&lt;/b&gt; return at least the database pk using the idProperty defined in your DataReader configuration. The incoming
		/// data from server will be merged with the data in the local record.
		/// In addition, you &lt;b&gt;must&lt;/b&gt; return record-data from the server in the same order received.
		/// Will perform a commit as well, un-marking dirty-fields. Store&apos;s &quot;update&quot; event will be suppressed.
		/// </htmlSummary>
		/// <definedin>src\data\DataReader.js</definedin>
		/// <param name="record">The phantom record to be realized.</param>
		/// <param name="data">The new record data to apply. Must include the primary-key from database defined in idProperty field.</param>
		[ScriptName("realize")]
		public void Realize(ext.data.RecordClass record, object data)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>
		/// Used for un-phantoming a record after a successful database insert. Sets the records pk along with new data from server.
		/// You must return at least the database pk using the idProperty defined in your DataReader configuration. The incoming
		/// data from server will be merged with the data in the local record.
		/// In addition, you must return record-data from the server in the same order received.
		/// Will perform a commit as well, un-marking dirty-fields. Store&apos;s &quot;update&quot; event will be suppressed.
		/// </summary>
		/// <htmlSummary>
		/// Used for un-phantoming a record after a successful database insert. Sets the records pk along with new data from server.
		/// You &lt;b&gt;must&lt;/b&gt; return at least the database pk using the idProperty defined in your DataReader configuration. The incoming
		/// data from server will be merged with the data in the local record.
		/// In addition, you &lt;b&gt;must&lt;/b&gt; return record-data from the server in the same order received.
		/// Will perform a commit as well, un-marking dirty-fields. Store&apos;s &quot;update&quot; event will be suppressed.
		/// </htmlSummary>
		/// <definedin>src\data\DataReader.js</definedin>
		/// <param name="record">The phantom record to be realized.</param>
		/// <param name="data">The new record data to apply. Must include the primary-key from database defined in idProperty field.</param>
		[ScriptName("realize")]
		public void Realize(ext.data.RecordClass record, object[] data)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>
		/// Used for un-phantoming a record after a successful database insert. Sets the records pk along with new data from server.
		/// You must return at least the database pk using the idProperty defined in your DataReader configuration. The incoming
		/// data from server will be merged with the data in the local record.
		/// In addition, you must return record-data from the server in the same order received.
		/// Will perform a commit as well, un-marking dirty-fields. Store&apos;s &quot;update&quot; event will be suppressed.
		/// </summary>
		/// <htmlSummary>
		/// Used for un-phantoming a record after a successful database insert. Sets the records pk along with new data from server.
		/// You &lt;b&gt;must&lt;/b&gt; return at least the database pk using the idProperty defined in your DataReader configuration. The incoming
		/// data from server will be merged with the data in the local record.
		/// In addition, you &lt;b&gt;must&lt;/b&gt; return record-data from the server in the same order received.
		/// Will perform a commit as well, un-marking dirty-fields. Store&apos;s &quot;update&quot; event will be suppressed.
		/// </htmlSummary>
		/// <definedin>src\data\DataReader.js</definedin>
		/// <param name="record">The phantom record to be realized.</param>
		/// <param name="data">The new record data to apply. Must include the primary-key from database defined in idProperty field.</param>
		[ScriptName("realize")]
		public void Realize(ext.data.RecordClass[] record, object data)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>
		/// Used for un-phantoming a record after a successful database insert. Sets the records pk along with new data from server.
		/// You must return at least the database pk using the idProperty defined in your DataReader configuration. The incoming
		/// data from server will be merged with the data in the local record.
		/// In addition, you must return record-data from the server in the same order received.
		/// Will perform a commit as well, un-marking dirty-fields. Store&apos;s &quot;update&quot; event will be suppressed.
		/// </summary>
		/// <htmlSummary>
		/// Used for un-phantoming a record after a successful database insert. Sets the records pk along with new data from server.
		/// You &lt;b&gt;must&lt;/b&gt; return at least the database pk using the idProperty defined in your DataReader configuration. The incoming
		/// data from server will be merged with the data in the local record.
		/// In addition, you &lt;b&gt;must&lt;/b&gt; return record-data from the server in the same order received.
		/// Will perform a commit as well, un-marking dirty-fields. Store&apos;s &quot;update&quot; event will be suppressed.
		/// </htmlSummary>
		/// <definedin>src\data\DataReader.js</definedin>
		/// <param name="record">The phantom record to be realized.</param>
		/// <param name="data">The new record data to apply. Must include the primary-key from database defined in idProperty field.</param>
		[ScriptName("realize")]
		public void Realize(ext.data.RecordClass[] record, object[] data)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>
		/// Used for updating a non-phantom or &quot;real&quot; record&apos;s data with fresh data from server after remote-save.
		/// If returning data from multiple-records after a batch-update, you must return record-data from the server in
		/// the same order received. Will perform a commit as well, un-marking dirty-fields. Store&apos;s &quot;update&quot; event will be
		/// suppressed as the record receives fresh new data-hash
		/// </summary>
		/// <htmlSummary>
		/// Used for updating a non-phantom or &quot;real&quot; record&apos;s data with fresh data from server after remote-save.
		/// If returning data from multiple-records after a batch-update, you &lt;b&gt;must&lt;/b&gt; return record-data from the server in
		/// the same order received. Will perform a commit as well, un-marking dirty-fields. Store&apos;s &quot;update&quot; event will be
		/// suppressed as the record receives fresh new data-hash
		/// </htmlSummary>
		/// <definedin>src\data\DataReader.js</definedin>
		/// <param name="rs"></param>
		/// <param name="data"></param>
		[ScriptName("update")]
		public void Update(ext.data.RecordClass rs, object data)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>
		/// Used for updating a non-phantom or &quot;real&quot; record&apos;s data with fresh data from server after remote-save.
		/// If returning data from multiple-records after a batch-update, you must return record-data from the server in
		/// the same order received. Will perform a commit as well, un-marking dirty-fields. Store&apos;s &quot;update&quot; event will be
		/// suppressed as the record receives fresh new data-hash
		/// </summary>
		/// <htmlSummary>
		/// Used for updating a non-phantom or &quot;real&quot; record&apos;s data with fresh data from server after remote-save.
		/// If returning data from multiple-records after a batch-update, you &lt;b&gt;must&lt;/b&gt; return record-data from the server in
		/// the same order received. Will perform a commit as well, un-marking dirty-fields. Store&apos;s &quot;update&quot; event will be
		/// suppressed as the record receives fresh new data-hash
		/// </htmlSummary>
		/// <definedin>src\data\DataReader.js</definedin>
		/// <param name="rs"></param>
		/// <param name="data"></param>
		[ScriptName("update")]
		public void Update(ext.data.RecordClass rs, object[] data)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>
		/// Used for updating a non-phantom or &quot;real&quot; record&apos;s data with fresh data from server after remote-save.
		/// If returning data from multiple-records after a batch-update, you must return record-data from the server in
		/// the same order received. Will perform a commit as well, un-marking dirty-fields. Store&apos;s &quot;update&quot; event will be
		/// suppressed as the record receives fresh new data-hash
		/// </summary>
		/// <htmlSummary>
		/// Used for updating a non-phantom or &quot;real&quot; record&apos;s data with fresh data from server after remote-save.
		/// If returning data from multiple-records after a batch-update, you &lt;b&gt;must&lt;/b&gt; return record-data from the server in
		/// the same order received. Will perform a commit as well, un-marking dirty-fields. Store&apos;s &quot;update&quot; event will be
		/// suppressed as the record receives fresh new data-hash
		/// </htmlSummary>
		/// <definedin>src\data\DataReader.js</definedin>
		/// <param name="rs"></param>
		/// <param name="data"></param>
		[ScriptName("update")]
		public void Update(ext.data.RecordClass[] rs, object data)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>
		/// Used for updating a non-phantom or &quot;real&quot; record&apos;s data with fresh data from server after remote-save.
		/// If returning data from multiple-records after a batch-update, you must return record-data from the server in
		/// the same order received. Will perform a commit as well, un-marking dirty-fields. Store&apos;s &quot;update&quot; event will be
		/// suppressed as the record receives fresh new data-hash
		/// </summary>
		/// <htmlSummary>
		/// Used for updating a non-phantom or &quot;real&quot; record&apos;s data with fresh data from server after remote-save.
		/// If returning data from multiple-records after a batch-update, you &lt;b&gt;must&lt;/b&gt; return record-data from the server in
		/// the same order received. Will perform a commit as well, un-marking dirty-fields. Store&apos;s &quot;update&quot; event will be
		/// suppressed as the record receives fresh new data-hash
		/// </htmlSummary>
		/// <definedin>src\data\DataReader.js</definedin>
		/// <param name="rs"></param>
		/// <param name="data"></param>
		[ScriptName("update")]
		public void Update(ext.data.RecordClass[] rs, object[] data)
		{
			throw new System.Exception("Imported - not implemented");
		}
		#endregion
	}
}
